#!/usr/bin/make -f
# debian/rules for amanda using debhelper. GNU copyright 2008 by Dan Locks,
# based on work by Bdale Garbee.

#	Warning - do *not* use -j on an SMP machine, or the build gets
#	confused... some sort of race condition in the makefiles?

# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1
AMVER=`cat FULL_VERSION`

# These are variables that the user can override.  They get used in various
# places during configure, build, and install.
PREFIX=/usr
BINDIR=$(PREFIX)/bin
triplet := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
ifeq ($(triplet),x86_64-linux-gnu)
LIBDIR=$(PREFIX)/lib/$(triplet)
else
LIBDIR=$(PREFIX)/lib
endif
AMLIBDIR=$(LIBDIR)/amanda
LIBEXECDIR=$(LIBDIR)
AMLIBEXECDIR=$(LIBEXECDIR)/amanda
MANDIR=$(PREFIX)/share/man
DOCDIR=$(PREFIX)/share/doc
SYSCONFDIR=/etc
LOCALSTATEDIR=/var
AMANDAHOMEDIR=$(LOCALSTATEDIR)/lib/amanda
LOGDIR=$(LOCALSTATEDIR)/log/amanda
# Extract the perl site_lib directory.  This is used to install amanda's perl 
# libs. If configure finds a different install or you specify a different path using
# --with-amperldir= make sure you change this variable as well.
PERLSITELIB=$(shell perl -V:installsitelib|sed -e"s:installsitelib='/::;s:'\;::")
AMANDAUSER=amandabackup
AMANDAGROUP=disk
WITHOUT_SERVER="False"
WITHOUT_CLIENT="False"

r=$(shell pwd)/debian/tmp
server=$(shell pwd)/debian/amanda-backup-server
client=$(shell pwd)/debian/amanda-backup-client

log=$(shell pwd)/debian/dpkg.log

# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_BUILD_ARCH_BITS  ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH_BITS)

WD=$(shell pwd)

build: build-stamp
build-stamp: /sbin/dump /usr/bin/smbclient
	dh_testdir
	./configure \
		MAKEFLAGS="-j1 " \
		CFLAGS="-pipe " \
		MAILER=/usr/bin/mail \
		--enable-as-needed \
		--quiet \
		--host=$(DEB_HOST_GNU_TYPE) \
		--build=$(DEB_BUILD_GNU_TYPE) \
		--prefix=$(PREFIX) \
		--libdir=$(LIBDIR) \
		--bindir=$(BINDIR) \
		--mandir=$(MANDIR) \
		--libexecdir=$(LIBEXECDIR) \
		--enable-shared \
		--sysconfdir=$(SYSCONFDIR) \
		--localstatedir=$(LOCALSTATEDIR) \
		--with-amdatadir=$(AMANDAHOMEDIR) \
		--with-gnutar-listdir=$(AMANDAHOMEDIR)/gnutar-lists \
		--with-index-server=localhost \
		--with-tape-server=localhost \
		--with-user=$(AMANDAUSER) \
		--with-group=$(AMANDAGROUP) \
                --with-fqdn \
		--with-bsd-security \
                --with-bsdtcp-security \
                --with-bsdudp-security \
		--with-amandahosts \
		--with-smbclient=$(BINDIR)/smbclient \
		--with-debugging=$(LOGDIR) \
		--with-ssh-security \
		--with-assertions \
		--enable-s3-device \
		--disable-installperms
	touch missing
	# Preinst is the same for client and server, but we leave room for
	# differences by just appending here.
	cat $(WD)/debian/preinst >> $(WD)/debian/amanda-backup-client.preinst
	cat $(WD)/debian/preinst >> $(WD)/debian/amanda-backup-server.preinst
	# Postinst and postrm keep client/server differences to just variables;
	# the postinst/postrm logic is otherwise the same.
	cat $(WD)/debian/postinst >> $(WD)/debian/amanda-backup-client.postinst
	cat $(WD)/debian/postinst >> $(WD)/debian/amanda-backup-server.postinst
	cat $(WD)/debian/postrm >> $(WD)/debian/amanda-backup-client.postrm
	cat $(WD)/debian/postrm >> $(WD)/debian/amanda-backup-server.postrm
	make -s LIBTOOLFLAGS=--silent
	touch build-stamp

clean:
	dh_testdir >> $(log) 2>&1
	dh_testroot >> $(log) 2>&1
	-make -s LIBTOOLFLAGS=--silent clean
	-make -s LIBTOOLFLAGS=--silent distclean
	-rm -f build-stamp missing config/config.h common-src/genversion
	-find . -type d -name .deps -exec rm -rf {} \;
	-test -r /usr/share/misc/config.sub && \
		cp -f /usr/share/misc/config.sub config/config.sub
	-test -r /usr/share/misc/config.guess && \
		cp -f /usr/share/misc/config.guess config/config.guess
	dh_clean >> $(log) 2>&1

# Build architecture-dependent files here.
binary-arch: build
	echo "---->dh_testdir: " >> $(log)
	dh_testdir >> $(log) 2>&1
	echo "---->dh_testroot: " >> $(log)
	dh_testroot >> $(log) 2>&1
	echo "---->dh_clean: " >> $(log)
	dh_clean -k >> $(log) 2>&1
	echo "---->dh_installdirs: " >> $(log)
	dh_installdirs -v >> $(log) 2>&1
	make -s LIBTOOLFLAGS=--silent install DESTDIR=$(r)
	echo "---->dh_installdocs: " >> $(log)
	dh_installdocs -v >> $(log) 2>&1
	install -d $(r)/$(DOCDIR)/amanda-common/examples
	cp -a example/* $(r)/$(DOCDIR)/amanda-common/examples
	cp ChangeLog $(r)/$(DOCDIR)/amanda-common/changelog
	echo "---->dh_installchangelogs: " >> $(log)
	dh_installchangelogs -v >> $(log) 2>&1
	# Here's how we get the perl modules installed into sitelib
	echo $(PERLSITELIB)/* >> debian/amanda-backup-server.install
	echo "---->dh_install -v --fail-missing: " >> $(log)
	dh_install -v --sourcedir=$(r) >> $(log) 2>&1
	echo "---->dh_strip: " >> $(log)
	dh_strip >> $(log) 2>&1
	echo "---->dh_compress: " >> $(log)
	dh_compress >> $(log) 2>&1
	echo "---->dh_fixperms: " >> $(log)
	dh_fixperms -v >> $(log) 2>&1
	# fix perms manually
	chown -R $(AMANDAUSER):$(AMANDAGROUP) debian/*/var/lib/*
	#chmod -R u=rwX,g=rwX,o-rwx debian/*/var/lib/*
	chown -R $(AMANDAUSER):$(AMANDAGROUP) $(client)/$(LOGDIR) $(server)/$(LOGDIR)
	#chmod -R u=rwX,g=rwX,o-rwx $(server)/$(LOGDIR)
	chown -R $(AMANDAUSER):$(AMANDAGROUP)  $(client)/$(SYSCONFDIR)/amanda $(server)/$(SYSCONFDIR)/amanda
	chmod -R u=rwX,g=rwX,o-rwx $(client)/$(SYSCONFDIR)/amanda
	chmod -R u=rwX,g=rwX,o-rwx $(server)/$(SYSCONFDIR)/amanda
	chown -R $(AMANDAUSER):$(AMANDAGROUP) $(client)/$(AMANDAHOMEDIR)/gnutar-lists $(server)/$(AMANDAHOMEDIR)/gnutar-lists
	chmod -R u=rwX,g=rwX,o-rwx  $(client)/$(AMANDAHOMEDIR)/gnutar-lists $(server)/$(AMANDAHOMEDIR)/gnutar-lists
	# .. setuid
	chown root:disk \
		$(client)/$(AMLIBEXECDIR)/application/amgtar \
		$(client)/$(AMLIBEXECDIR)/application/amstar \
		$(client)/$(AMLIBEXECDIR)/killpgrp \
		$(client)/$(AMLIBEXECDIR)/rundump \
		$(client)/$(AMLIBEXECDIR)/runtar \
		$(client)/$(AMLIBEXECDIR)/calcsize \
		$(server)/$(AMLIBEXECDIR)/application/amgtar \
		$(server)/$(AMLIBEXECDIR)/application/amstar \
		$(server)/$(AMLIBEXECDIR)/killpgrp \
		$(server)/$(AMLIBEXECDIR)/rundump \
		$(server)/$(AMLIBEXECDIR)/runtar \
		$(server)/$(AMLIBEXECDIR)/calcsize \
		$(server)/$(AMLIBEXECDIR)/ambind
	chmod u=srwx,g=rx,o= \
		$(client)/$(AMLIBEXECDIR)/application/amgtar \
		$(client)/$(AMLIBEXECDIR)/application/amstar \
		$(client)/$(AMLIBEXECDIR)/killpgrp \
		$(client)/$(AMLIBEXECDIR)/rundump \
		$(client)/$(AMLIBEXECDIR)/runtar \
		$(client)/$(AMLIBEXECDIR)/calcsize \
		$(server)/$(AMLIBEXECDIR)/application/amgtar \
		$(server)/$(AMLIBEXECDIR)/application/amstar \
		$(server)/$(AMLIBEXECDIR)/killpgrp \
		$(server)/$(AMLIBEXECDIR)/rundump \
		$(server)/$(AMLIBEXECDIR)/runtar \
		$(server)/$(AMLIBEXECDIR)/calcsize \
		$(server)/$(AMLIBEXECDIR)/ambind
	echo "Amanda version $(AMVER)" >  $(server)/$(AMANDAHOMEDIR)/amanda-release
	echo "Amanda version $(AMVER)" >  $(client)/$(AMANDAHOMEDIR)/amanda-release
	install -o root -g root -m 0644 debian/amanda-backup-client.lintian \
		$(client)/usr/share/lintian/overrides/amanda-backup-client
	install -o root -g root -m 0644 debian/amanda-backup-server.lintian \
		$(server)/usr/share/lintian/overrides/amanda-backup-server
	dh_makeshlibs  >> $(log) 2>&1
	dh_perl >> $(log) 2>&1
	dh_shlibdeps -l"$(r)$(LIBDIR):$(client)$(LIBDIR):$(server)$(LIBDIR)" >> $(log) 2>&1
	dh_installdeb >> $(log) 2>&1
	dh_gencontrol >> $(log) 2>&1
	dh_md5sums  >> $(log) 2>&1
	dh_builddeb  >> $(log) 2>&1

source diff:
	@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false

binary: binary-arch
.PHONY: build clean binary-arch binary
